package com.gitee.l0km.aocache.config;

import java.lang.reflect.Member;

/**
 * 为指定成员提供缓存配置的接口<br>
 * 应用层实现此接口可以为不同的方法配置不同的缓存配置
 * @author guyadong
 *
 */
public interface CacheConfigSupplier {
    /**
     * 根据给定的成员和目标对象获取对应的缓存配置。<p>
     * 此方法用于为指定的成员（如方法、字段等）和目标对象提供相应的缓存配置。<br>
     * 不同的实现可以根据具体需求返回不同的缓存配置。<p>
     * 
     * @param input 要获取缓存配置的成员，如方法、字段等。
     * @param target 与成员相关的目标对象，可用于上下文信息。
     * @return 对应成员和目标对象的缓存配置。
     */
    CacheConfig configOf(Member input, Object target);
	/**
	 * 默认  {@link CacheConfigSupplier}实例
	 */
	public static final CacheConfigSupplier DEFAULT_SUPPLIER = new CacheConfigSupplier() {

		@Override
		public CacheConfig configOf(Member input, Object target) {
			return CacheConfig.DEFAULT_CONFIG;
		}};
}